package com.server.llh.llhserverwork.bean;

public interface AccountConstant {

	// 账户类型
	public static enum AccountType {
		PERSONAL_CASH(1, "PC"), // 个人现金账户
		ORG_CASH(5, "OC"),
		PERSONAL_CASH_CARD(6, "PAC"),
		PERSONAL_CASH__VISUAL_CARD(7, "PVAC"),
		PLAT_CASH(8,"PLATCASH"),

		PERSONAL_VISUAL(10, "PV"), // 个人虚拟
		ORG_VISUAL(15, "OV"), // 机构虚拟

		PERSONAL_DEPOSIT(20, "PD"), // 个人押金
		ORG_DEPOSIT(25, "OD"), // 机构押金

		ORG_SETTLE(30, "OS"), // 机构结算
		PERSONAL_SETTLE(35, "PS"), // 机构结算

		PERSONAL_POINT(38, "PP"), // 个人积分账户

		PERSONAL_INCOME(40, "PI"), // 个人账户
		ORG_INCOME(41, "OI"), // 机构收入账户

		PLAT_ZS(100, "PLATZS"); // 平台准收入账户
		public int value;
		public String prefix;

		private AccountType(int value, String prefix) {
			this.value = value;
			this.prefix = prefix;
		}

	}

	// 活动卡类型
	public static enum ActiveCardType {
		CASH(AccountType.PERSONAL_CASH_CARD.value, AccountType.PERSONAL_CASH_CARD.prefix),
		VISUAL(AccountType.PERSONAL_CASH__VISUAL_CARD.value, AccountType.PERSONAL_CASH__VISUAL_CARD.prefix);
		public int value;
		public String prefix;

		private ActiveCardType(int value, String prefix) {
			this.value = value;
			this.prefix = prefix;
		}
	}

	// 账户变动类型
	public static enum AccountChangeType { // 账户变动类型
		RECHARGE(1), // 充值
		RECHARGE_CANCEL(5), // 充值退回

		TRANSFER_IN(10), // 转入
		TRANSFER_OUT(11), // 转出

		PREPURCHASE_SERVICE(19), // 服务预付费
		CONSUME_CATERING(20), // 餐饮消费
		CONSUME_SERVICE(21), // 服务消费
		CONSUME_GOODS(22), // 商品消费
		

		CONSUME_CATERING_CANCEL(30), // 餐饮消费
		CONSUME_SERVICE_CANCEL(31), // 服务消费
		CONSUME_GOODS_CANCEL(32), // 商品消费

		// 仅对平台准收账户
		PREPURCHASE_IN(35), // 预付费存入
		PREPURCHASE_OUT(36), // 预付费取出

		// 押金
		DEPOSIT_IN(40), // 存入
		DEPOSIT_OUT(43), // 取出
		DEPOSIT_USE(44), // 支出

		// 积分
		POINT_ADD(45), // 增加
		POINT_DEC(46), // 减少

		EXPIRE_CARD(50), // 虚拟活动卡过期

		JSZR(60), // 结算转入 仅对收入账户
		JSYDX(61), // 结算应兑现 仅对收入账户

		INC(100), // 调增
		DEC(101); // 调减

		public int value;

		private AccountChangeType(int value) {
			this.value = value;
		}
	}

	public static enum ConsumeType { // 账户变动类型
		CONSUME_CATERING(20), // 餐饮消费
		CONSUME_SERVICE(21), // 服务消费
		CONSUME_GOODS(22); // 商品消费
		public int value;

		private ConsumeType(int value) {
			this.value = value;
		}
	}

	// 支付类型
	public static enum PayType {
		CASH_ACCOUNT(2), // 现金/乐老卡支付
		ACTIVE_CARD(3), // 现金/虚拟活动卡账户支付
		CASH(5), // 现金支付
		ALPAY(6), // 支付宝
		WEIXIN(7), // 微信
		CARD(8), // 银行卡
		COUPON(10), // 优惠券
		POINTS(11); // 积分支付
		public int value;

		private PayType(int value) {
			this.value = value;
		}
	}

	// 资金来源/类型
	public static enum FundsType {
		CASH(5), // 现金
		ALPAY(6), // 支付宝

		WEIXIN(7), // 微信
		CARD(8), // 银行卡
		POS(9), // POS 机
		PHONE(10), // 手机宝
		TRANSFER(11), // 转账
		ACTIVITYCARD(20); // 活动卡

		public int value;

		private FundsType(int value) {
			this.value = value;
		}
	}

	// 押金类型
	public static enum DepositType {
		DEVICE(5), // 设备押金
		INHOSPITAL(6), // 住院押金
		OTHER(7); // 其它押金
		public int value;

		public static DepositType fromIntValue(int value) {
			DepositType[] vs = DepositType.values();
			DepositType type = null;
			for (int i = 0; i < vs.length; i++) {
				if (vs[i].value == value) {
					type = vs[i];
					break;
				}
			}
			return type;
		}

		private DepositType(int value) {
			this.value = value;
		}
	}

	// 积分类型
	public static enum PointType {
		XF(5), // 消费积分
		JZ(6), // 捐助积分
		ZYFW(7), // 志愿服务积分
		LFJF(8), // 乐服积分
		FZHY(9), // 发展会员积分
		HDJF(10), // 活动积分(老人)
		YGGL(11), // 员工工龄积分
		TJXR(12), // 推荐新人入职积分
		HLJY(13), // 合理化建议积分
		CJPX(14), // 参加公司培训积分
		CXXF(15), // 促销消费积分
		TJFWLR(16), // 推荐服务老人积分
		ZZRY(17), // 资质/荣誉积分
		TSGX(18), // 特殊贡献积分
		YXJL(19), // 优秀奖励积分(评优)
		XFDCJL(20), // 消费抵充现金
		FXTJ(21);// 增分项反向退减
		public static PointType fromIntValue(int value) {
			PointType[] vs = PointType.values();
			PointType type = null;
			for (int i = 0; i < vs.length; i++) {
				if (vs[i].value == value) {
					type = vs[i];
					break;
				}
			}
			return type;
		}

		public int value;

		private PointType(int value) {
			this.value = value;
		}
	}

	// 结算类型
	public static enum SettleType {
		RECEIVEABLE(5), // 应收/待结金额
		VISUAL_CARD_PAYMENT(6), // 虚拟卡应兑付
		CONSUME_CANCEL_PAYMENT(7), // 消费退回应兑付
		DISCOUNT_PAYMENT(8), // 折扣应兑
		COUPON_PAYMENT(10); // 优惠券应兑

		public int value;

		private SettleType(int value) {
			this.value = value;
		}
	}

}
